###########################################################################
#                            TextMate Snippets                            #
###########################################################################
snippet get "Get Elements"
getElement${1/(T)|.*/(?1:s)/}By${1:T}${1/(T)|(I)|.*/(?1:agName)(?2:d)/}('$2')
endsnippet

snippet '':f "object method string"
'${1:${2:#thing}:${3:click}}': function(element) {
	${VISUAL}$0
}${10:,}
endsnippet

snippet :f "Object Method"
${1:method_name}: function(${3:attribute}) {
	${VISUAL}$0
}${10:,}
endsnippet

snippet :, "Object Value JS"
${1:value_name}: ${0:value},
endsnippet

snippet : "Object key key: 'value'"
${1:key}: ${2:"${3:value}"}${4:, }
endsnippet

snippet proto "Prototype (proto)"
${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {
	${VISUAL}$0
};

endsnippet

snippet for "for (...) {...} (faster)"
for (var ${2:i} = ${1:Things}.length - 1; $2 >= 0; $2--) {
	${3:$1[$2]}${VISUAL}$0
}
endsnippet

snippet for "for (...) {...}"
for (var ${2:i}=0; $2 < ${1:Things}.length; $2++) {
	${3:$1[$2]}${VISUAL}$0
}
endsnippet

snippet fun "function (fun)"
function ${1:function_name}(${2:argument}) {
	${VISUAL}$0
}
endsnippet

snippet iife "Immediately-Invoked Function Expression (iife)"
(function (${1:argument}) {
	${VISUAL}$0
}(${2:$1}));
endsnippet

snippet ife "if ___ else"
if (${1:condition}) {
  ${2://code}
}
else {
  ${3://code}
}
endsnippet

snippet if "if"
if (${1:condition}) {
  ${VISUAL}$0
}
endsnippet

snippet timeout "setTimeout function"
setTimeout(function() {
  ${VISUAL}$0
}${2:.bind(${3:this})}, ${1:10});
endsnippet

# Snippets for Console Debug Output

snippet cl "console.log"
console.log(${1:"${2:value}"});
endsnippet

snippet cw "console.warn"
console.warn(${1:"${2:value}"});
endsnippet

snippet ce "console.error"
console.error(${1:"${2:value}"});
endsnippet

snippet ca "console.assert"
console.assert(${1:assertion}, ${2:"${3:message}"});
endsnippet

snippet cgroup "console.group"
console.group("${1:label}");
${VISUAL}$0
console.groupEnd();
endsnippet

snippet ctime "console.time"
console.time("${1:label}");
${VISUAL}$0
console.timeEnd("$1");
endsnippet

snippet ctimestamp "console.timestamp"
console.timeStamp("${1:label}")
endsnippet

snippet ctrace "console.trace"
console.trace();
endsnippet

# AMD (Asynchronous Module Definition) snippets

snippet def "define an AMD module"
define(${1:optional_name, }[${2:'jquery'}], ${3:callback});
endsnippet

snippet req "require an AMD module"
require([${1:'dependencies'}], ${2:callback});
endsnippet

# vim:ft=snippets:
